// Copyright 2021-2025 Buf Technologies, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// @generated by protoc-gen-es v2.10.1 with parameter "target=ts,import_extension=js"
// @generated from file extra/edition2023.proto (package spec, edition 2023)
/* eslint-disable */

import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
import type { UInt32Value } from "@bufbuild/protobuf/wkt";
import { file_google_protobuf_wrappers } from "@bufbuild/protobuf/wkt";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file extra/edition2023.proto.
 */
export const file_extra_edition2023: GenFile = /*@__PURE__*/
  fileDesc("ChdleHRyYS9lZGl0aW9uMjAyMy5wcm90bxIEc3BlYyLsJgoSRWRpdGlvbjIwMjNNZXNzYWdlEh4KFWV4cGxpY2l0X3N0cmluZ19maWVsZBitAiABKAkSHQoUZXhwbGljaXRfYnl0ZXNfZmllbGQYrgIgASgMEh0KFGV4cGxpY2l0X2ludDMyX2ZpZWxkGK8CIAEoBRIdChRleHBsaWNpdF9pbnQ2NF9maWVsZBiwAiABKAMSKwoeZXhwbGljaXRfaW50NjRfanNfbnVtYmVyX2ZpZWxkGLECIAEoA0ICMAISKwoeZXhwbGljaXRfaW50NjRfanNfc3RyaW5nX2ZpZWxkGLICIAEoA0ICMAESHQoUZXhwbGljaXRfZmxvYXRfZmllbGQYswIgASgCEhwKE2V4cGxpY2l0X2Jvb2xfZmllbGQYtAIgASgIEjwKGGV4cGxpY2l0X2VudW1fb3Blbl9maWVsZBi1AiABKA4yGS5zcGVjLkVkaXRpb24yMDIzRW51bU9wZW4SQAoaZXhwbGljaXRfZW51bV9jbG9zZWRfZmllbGQYtgIgASgOMhsuc3BlYy5FZGl0aW9uMjAyM0VudW1DbG9zZWQSOQoWZXhwbGljaXRfbWVzc2FnZV9maWVsZBi3AiABKAsyGC5zcGVjLkVkaXRpb24yMDIzTWVzc2FnZRJKCiBleHBsaWNpdF9tZXNzYWdlX2RlbGltaXRlZF9maWVsZBi4AiABKAsyGC5zcGVjLkVkaXRpb24yMDIzTWVzc2FnZUIFqgECKAISRAodZXhwbGljaXRfd3JhcHBlZF91aW50MzJfZmllbGQYuQIgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlVJbnQzMlZhbHVlEiUKFWltcGxpY2l0X3N0cmluZ19maWVsZBjJASABKAlCBaoBAggCEiQKFGltcGxpY2l0X2J5dGVzX2ZpZWxkGMoBIAEoDEIFqgECCAISJAoUaW1wbGljaXRfaW50MzJfZmllbGQYywEgASgFQgWqAQIIAhIkChRpbXBsaWNpdF9pbnQ2NF9maWVsZBjMASABKANCBaoBAggCEjAKHmltcGxpY2l0X2ludDY0X2pzX251bWJlcl9maWVsZBjNASABKANCBzACqgECCAISMAoeaW1wbGljaXRfaW50NjRfanNfc3RyaW5nX2ZpZWxkGM4BIAEoA0IHMAGqAQIIAhIkChRpbXBsaWNpdF9mbG9hdF9maWVsZBjPASABKAJCBaoBAggCEiMKE2ltcGxpY2l0X2Jvb2xfZmllbGQY0AEgASgIQgWqAQIIAhJDChhpbXBsaWNpdF9lbnVtX29wZW5fZmllbGQY0QEgASgOMhkuc3BlYy5FZGl0aW9uMjAyM0VudW1PcGVuQgWqAQIIAhIkChVyZXF1aXJlZF9zdHJpbmdfZmllbGQYASABKAlCBaoBAggDEiMKFHJlcXVpcmVkX2J5dGVzX2ZpZWxkGAIgASgMQgWqAQIIAxIjChRyZXF1aXJlZF9pbnQzMl9maWVsZBgDIAEoBUIFqgECCAMSIwoUcmVxdWlyZWRfaW50NjRfZmllbGQYBCABKANCBaoBAggDEi8KHnJlcXVpcmVkX2ludDY0X2pzX251bWJlcl9maWVsZBgFIAEoA0IHMAKqAQIIAxIvCh5yZXF1aXJlZF9pbnQ2NF9qc19zdHJpbmdfZmllbGQYBiABKANCBzABqgECCAMSIwoUcmVxdWlyZWRfZmxvYXRfZmllbGQYByABKAJCBaoBAggDEiIKE3JlcXVpcmVkX2Jvb2xfZmllbGQYCCABKAhCBaoBAggDEkIKGHJlcXVpcmVkX2VudW1fb3Blbl9maWVsZBgJIAEoDjIZLnNwZWMuRWRpdGlvbjIwMjNFbnVtT3BlbkIFqgECCAMSRgoacmVxdWlyZWRfZW51bV9jbG9zZWRfZmllbGQYCiABKA4yGy5zcGVjLkVkaXRpb24yMDIzRW51bUNsb3NlZEIFqgECCAMSRQoWcmVxdWlyZWRfbWVzc2FnZV9maWVsZBgLIAEoCzIeLnNwZWMuRWRpdGlvbjIwMjNNZXNzYWdlLkNoaWxkQgWqAQIIAxJRCiByZXF1aXJlZF9tZXNzYWdlX2RlbGltaXRlZF9maWVsZBgMIAEoCzIeLnNwZWMuRWRpdGlvbjIwMjNNZXNzYWdlLkNoaWxkQgeqAQQIAygCEkoKHXJlcXVpcmVkX3dyYXBwZWRfdWludDMyX2ZpZWxkGA0gASgLMhwuZ29vZ2xlLnByb3RvYnVmLlVJbnQzMlZhbHVlQgWqAQIIAxI5Ch1yZXF1aXJlZF9kZWZhdWx0X3N0cmluZ19maWVsZBhlIAEoCToLaGVsbG8gIiAqLyBCBaoBAggDElIKHHJlcXVpcmVkX2RlZmF1bHRfYnl0ZXNfZmllbGQYZiABKAw6JVwwMDB4XFx4XCJ4XCdBQUFBQUFcMDEwXDAxNFxuXHJcdFwwMTNCBaoBAggDEjAKHHJlcXVpcmVkX2RlZmF1bHRfaW50MzJfZmllbGQYZyABKAU6AzEyOEIFqgECCAMSMQoccmVxdWlyZWRfZGVmYXVsdF9pbnQ2NF9maWVsZBhoIAEoAzoELTI1NkIFqgECCAMSPQomcmVxdWlyZWRfZGVmYXVsdF9pbnQ2NF9qc19udW1iZXJfZmllbGQYaSABKAM6BC0yNTZCBzACqgECCAMSPQomcmVxdWlyZWRfZGVmYXVsdF9pbnQ2NF9qc19zdHJpbmdfZmllbGQYaiABKAM6BC0yNTZCBzABqgECCAMSNAoccmVxdWlyZWRfZGVmYXVsdF9mbG9hdF9maWVsZBhrIAEoAjoHLTUxMi4xM0IFqgECCAMSMAobcmVxdWlyZWRfZGVmYXVsdF9ib29sX2ZpZWxkGGwgASgIOgR0cnVlQgWqAQIIAxJjCiByZXF1aXJlZF9kZWZhdWx0X2VudW1fb3Blbl9maWVsZBhtIAEoDjIZLnNwZWMuRWRpdGlvbjIwMjNFbnVtT3BlbjoXRURJVElPTjIwMjNfRU5VTV9PUEVOX0FCBaoBAggDEmkKInJlcXVpcmVkX2RlZmF1bHRfZW51bV9jbG9zZWRfZmllbGQYbiABKA4yGy5zcGVjLkVkaXRpb24yMDIzRW51bUNsb3NlZDoZRURJVElPTjIwMjNfRU5VTV9DTE9TRURfQUIFqgECCAMSHgoVcmVwZWF0ZWRfc3RyaW5nX2ZpZWxkGJEDIAMoCRIdChRyZXBlYXRlZF9ieXRlc19maWVsZBiSAyADKAwSHQoUcmVwZWF0ZWRfaW50MzJfZmllbGQYkwMgAygFEh0KFHJlcGVhdGVkX2ludDY0X2ZpZWxkGJQDIAMoAxIrCh5yZXBlYXRlZF9pbnQ2NF9qc19udW1iZXJfZmllbGQYlQMgAygDQgIwAhIrCh5yZXBlYXRlZF9pbnQ2NF9qc19zdHJpbmdfZmllbGQYlgMgAygDQgIwARIdChRyZXBlYXRlZF9mbG9hdF9maWVsZBiXAyADKAISHAoTcmVwZWF0ZWRfYm9vbF9maWVsZBiYAyADKAgSPAoYcmVwZWF0ZWRfZW51bV9vcGVuX2ZpZWxkGJkDIAMoDjIZLnNwZWMuRWRpdGlvbjIwMjNFbnVtT3BlbhJAChpyZXBlYXRlZF9lbnVtX2Nsb3NlZF9maWVsZBiaAyADKA4yGy5zcGVjLkVkaXRpb24yMDIzRW51bUNsb3NlZBI5ChZyZXBlYXRlZF9tZXNzYWdlX2ZpZWxkGJsDIAMoCzIYLnNwZWMuRWRpdGlvbjIwMjNNZXNzYWdlEkoKIHJlcGVhdGVkX21lc3NhZ2VfZGVsaW1pdGVkX2ZpZWxkGJwDIAMoCzIYLnNwZWMuRWRpdGlvbjIwMjNNZXNzYWdlQgWqAQIoAhJECh1yZXBlYXRlZF93cmFwcGVkX3VpbnQzMl9maWVsZBidAyADKAsyHC5nb29nbGUucHJvdG9idWYuVUludDMyVmFsdWUSIwoTcGFja2VkX2RvdWJsZV9maWVsZBieAyADKAFCBaoBAhgBEiMKE3BhY2tlZF91aW50MzJfZmllbGQYnwMgAygNQgWqAQIYARIjChNwYWNrZWRfdWludDY0X2ZpZWxkGKADIAMoBEIFqgECGAESJQoVdW5wYWNrZWRfZG91YmxlX2ZpZWxkGKEDIAMoAUIFqgECGAISJQoVdW5wYWNrZWRfdWludDMyX2ZpZWxkGKIDIAMoDUIFqgECGAISJQoVdW5wYWNrZWRfdWludDY0X2ZpZWxkGKMDIAMoBEIFqgECGAISHQoSb25lb2Zfc3RyaW5nX2ZpZWxkGPUDIAEoCUgAEhwKEW9uZW9mX2J5dGVzX2ZpZWxkGPYDIAEoDEgAEhwKEW9uZW9mX2ludDMyX2ZpZWxkGPcDIAEoBUgAEhwKEW9uZW9mX2ludDY0X2ZpZWxkGPgDIAEoA0gAEioKG29uZW9mX2ludDY0X2pzX251bWJlcl9maWVsZBj5AyABKANCAjACSAASKgobb25lb2ZfaW50NjRfanNfc3RyaW5nX2ZpZWxkGPoDIAEoA0ICMAFIABIcChFvbmVvZl9mbG9hdF9maWVsZBj7AyABKAJIABIbChBvbmVvZl9ib29sX2ZpZWxkGPwDIAEoCEgAEjsKFW9uZW9mX2VudW1fb3Blbl9maWVsZBj9AyABKA4yGS5zcGVjLkVkaXRpb24yMDIzRW51bU9wZW5IABI/ChdvbmVvZl9lbnVtX2Nsb3NlZF9maWVsZBj+AyABKA4yGy5zcGVjLkVkaXRpb24yMDIzRW51bUNsb3NlZEgAEjgKE29uZW9mX21lc3NhZ2VfZmllbGQY/wMgASgLMhguc3BlYy5FZGl0aW9uMjAyM01lc3NhZ2VIABJJCh1vbmVvZl9tZXNzYWdlX2RlbGltaXRlZF9maWVsZBiABCABKAsyGC5zcGVjLkVkaXRpb24yMDIzTWVzc2FnZUIFqgECKAJIABJDChpvbmVvZl93cmFwcGVkX3VpbnQzMl9maWVsZBiBBCABKAsyHC5nb29nbGUucHJvdG9idWYuVUludDMyVmFsdWVIABJUChdtYXBfc3RyaW5nX3N0cmluZ19maWVsZBjZBCADKAsyMi5zcGVjLkVkaXRpb24yMDIzTWVzc2FnZS5NYXBTdHJpbmdTdHJpbmdGaWVsZEVudHJ5ElAKFW1hcF9pbnQzMl9pbnQzMl9maWVsZBjaBCADKAsyMC5zcGVjLkVkaXRpb24yMDIzTWVzc2FnZS5NYXBJbnQzMkludDMyRmllbGRFbnRyeRJMChNtYXBfYm9vbF9ib29sX2ZpZWxkGNsEIAMoCzIuLnNwZWMuRWRpdGlvbjIwMjNNZXNzYWdlLk1hcEJvb2xCb29sRmllbGRFbnRyeRJQChVtYXBfaW50NjRfaW50NjRfZmllbGQY3AQgAygLMjAuc3BlYy5FZGl0aW9uMjAyM01lc3NhZ2UuTWFwSW50NjRJbnQ2NEZpZWxkRW50cnkSVwoZbWFwX2ludDMyX2VudW1fb3Blbl9maWVsZBjdBCADKAsyMy5zcGVjLkVkaXRpb24yMDIzTWVzc2FnZS5NYXBJbnQzMkVudW1PcGVuRmllbGRFbnRyeRJUChdtYXBfaW50MzJfbWVzc2FnZV9maWVsZBjfBCADKAsyMi5zcGVjLkVkaXRpb24yMDIzTWVzc2FnZS5NYXBJbnQzMk1lc3NhZ2VGaWVsZEVudHJ5EmEKHm1hcF9pbnQzMl93cmFwcGVkX3VpbnQzMl9maWVsZBjgBCADKAsyOC5zcGVjLkVkaXRpb24yMDIzTWVzc2FnZS5NYXBJbnQzMldyYXBwZWRVaW50MzJGaWVsZEVudHJ5GjsKGU1hcFN0cmluZ1N0cmluZ0ZpZWxkRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo5ChdNYXBJbnQzMkludDMyRmllbGRFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBGjcKFU1hcEJvb2xCb29sRmllbGRFbnRyeRILCgNrZXkYASABKAgSDQoFdmFsdWUYAiABKAg6AjgBGjkKF01hcEludDY0SW50NjRGaWVsZEVudHJ5EgsKA2tleRgBIAEoAxINCgV2YWx1ZRgCIAEoAzoCOAEaVwoaTWFwSW50MzJFbnVtT3BlbkZpZWxkRW50cnkSCwoDa2V5GAEgASgFEigKBXZhbHVlGAIgASgOMhkuc3BlYy5FZGl0aW9uMjAyM0VudW1PcGVuOgI4ARpVChlNYXBJbnQzMk1lc3NhZ2VGaWVsZEVudHJ5EgsKA2tleRgBIAEoBRInCgV2YWx1ZRgCIAEoCzIYLnNwZWMuRWRpdGlvbjIwMjNNZXNzYWdlOgI4ARpfCh9NYXBJbnQzMldyYXBwZWRVaW50MzJGaWVsZEVudHJ5EgsKA2tleRgBIAEoBRIrCgV2YWx1ZRgCIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5VSW50MzJWYWx1ZToCOAEaEgoFQ2hpbGQSCQoBZhgBIAEoBUIICgZlaXRoZXIijAUKHEVkaXRpb24yMDIzRnJvbVByb3RvMk1lc3NhZ2USGwoTb3B0aW9uYWxfYm9vbF9maWVsZBgBIAEoCBI/ChpvcHRpb25hbF9jbG9zZWRfZW51bV9maWVsZBgCIAEoDjIbLnNwZWMuRWRpdGlvbjIwMjNFbnVtQ2xvc2VkEjcKIm9wdGlvbmFsX3N0cmluZ19maWVsZF93aXRoX2RlZmF1bHQYAyABKAk6C2hlbGxvICIgKi8gEk4KDW9wdGlvbmFsZ3JvdXAYBCABKAsyMC5zcGVjLkVkaXRpb24yMDIzRnJvbVByb3RvMk1lc3NhZ2UuT3B0aW9uYWxHcm91cEIFqgECKAISIgoTcmVxdWlyZWRfYm9vbF9maWVsZBgFIAEoCEIFqgECCAMSRgoacmVxdWlyZWRfY2xvc2VkX2VudW1fZmllbGQYBiABKA4yGy5zcGVjLkVkaXRpb24yMDIzRW51bUNsb3NlZEIFqgECCAMSMwoicmVxdWlyZWRfc3RyaW5nX2ZpZWxkX3dpdGhfZGVmYXVsdBgHIAEoCToAQgWqAQIIAxJOCg1yZXF1aXJlZGdyb3VwGAggASgLMjAuc3BlYy5FZGl0aW9uMjAyM0Zyb21Qcm90bzJNZXNzYWdlLlJlcXVpcmVkR3JvdXBCBaoBAigCEiIKE3BhY2tlZF9kb3VibGVfZmllbGQYCSADKAFCBaoBAhgBEiQKFXVucGFja2VkX2RvdWJsZV9maWVsZBgKIAMoAUIFqgECGAIaJAoNT3B0aW9uYWxHcm91cBITCgtpbnQzMl9maWVsZBgBIAEoBRokCg1SZXF1aXJlZEdyb3VwEhMKC2ludDMyX2ZpZWxkGAEgASgFIrgCChxFZGl0aW9uMjAyM0Zyb21Qcm90bzNNZXNzYWdlEiIKE2ltcGxpY2l0X2Jvb2xfZmllbGQYASABKAhCBaoBAggCEkIKGGltcGxpY2l0X29wZW5fZW51bV9maWVsZBgCIAEoDjIZLnNwZWMuRWRpdGlvbjIwMjNFbnVtT3BlbkIFqgECCAISIgoTZXhwbGljaXRfYm9vbF9maWVsZBgFIAEoCEIFqgECCAESQgoYZXhwbGljaXRfb3Blbl9lbnVtX2ZpZWxkGAYgASgOMhkuc3BlYy5FZGl0aW9uMjAyM0VudW1PcGVuQgWqAQIIARIiChNwYWNrZWRfZG91YmxlX2ZpZWxkGAkgAygBQgWqAQIYARIkChV1bnBhY2tlZF9kb3VibGVfZmllbGQYCiADKAFCBaoBAhgCKlkKE0VkaXRpb24yMDIzRW51bU9wZW4SJQohRURJVElPTjIwMjNfRU5VTV9PUEVOX1VOU1BFQ0lGSUVEEAASGwoXRURJVElPTjIwMjNfRU5VTV9PUEVOX0EQASo8ChVFZGl0aW9uMjAyM0VudW1DbG9zZWQSHQoZRURJVElPTjIwMjNfRU5VTV9DTE9TRURfQRABGgQ6AhACYghlZGl0aW9uc3DoBw", [file_google_protobuf_wrappers]);

/**
 * Note: We do not exhaust all field types
 *
 * @generated from message spec.Edition2023Message
 */
export type Edition2023Message = Message<"spec.Edition2023Message"> & {
  /**
   * @generated from field: string explicit_string_field = 301;
   */
  explicitStringField: string;

  /**
   * @generated from field: bytes explicit_bytes_field = 302;
   */
  explicitBytesField: Uint8Array;

  /**
   * @generated from field: int32 explicit_int32_field = 303;
   */
  explicitInt32Field: number;

  /**
   * @generated from field: int64 explicit_int64_field = 304;
   */
  explicitInt64Field: bigint;

  /**
   * @generated from field: int64 explicit_int64_js_number_field = 305 [jstype = JS_NUMBER];
   */
  explicitInt64JsNumberField: bigint;

  /**
   * @generated from field: int64 explicit_int64_js_string_field = 306 [jstype = JS_STRING];
   */
  explicitInt64JsStringField: string;

  /**
   * @generated from field: float explicit_float_field = 307;
   */
  explicitFloatField: number;

  /**
   * @generated from field: bool explicit_bool_field = 308;
   */
  explicitBoolField: boolean;

  /**
   * @generated from field: spec.Edition2023EnumOpen explicit_enum_open_field = 309;
   */
  explicitEnumOpenField: Edition2023EnumOpen;

  /**
   * @generated from field: spec.Edition2023EnumClosed explicit_enum_closed_field = 310;
   */
  explicitEnumClosedField: Edition2023EnumClosed;

  /**
   * @generated from field: spec.Edition2023Message explicit_message_field = 311;
   */
  explicitMessageField?: Edition2023Message;

  /**
   * @generated from field: spec.Edition2023Message explicit_message_delimited_field = 312 [features.message_encoding = DELIMITED];
   */
  explicitMessageDelimitedField?: Edition2023Message;

  /**
   * @generated from field: google.protobuf.UInt32Value explicit_wrapped_uint32_field = 313;
   */
  explicitWrappedUint32Field?: number;

  /**
   * @generated from field: string implicit_string_field = 201 [features.field_presence = IMPLICIT];
   */
  implicitStringField: string;

  /**
   * @generated from field: bytes implicit_bytes_field = 202 [features.field_presence = IMPLICIT];
   */
  implicitBytesField: Uint8Array;

  /**
   * @generated from field: int32 implicit_int32_field = 203 [features.field_presence = IMPLICIT];
   */
  implicitInt32Field: number;

  /**
   * @generated from field: int64 implicit_int64_field = 204 [features.field_presence = IMPLICIT];
   */
  implicitInt64Field: bigint;

  /**
   * @generated from field: int64 implicit_int64_js_number_field = 205 [jstype = JS_NUMBER, features.field_presence = IMPLICIT];
   */
  implicitInt64JsNumberField: bigint;

  /**
   * @generated from field: int64 implicit_int64_js_string_field = 206 [jstype = JS_STRING, features.field_presence = IMPLICIT];
   */
  implicitInt64JsStringField: string;

  /**
   * @generated from field: float implicit_float_field = 207 [features.field_presence = IMPLICIT];
   */
  implicitFloatField: number;

  /**
   * @generated from field: bool implicit_bool_field = 208 [features.field_presence = IMPLICIT];
   */
  implicitBoolField: boolean;

  /**
   * @generated from field: spec.Edition2023EnumOpen implicit_enum_open_field = 209 [features.field_presence = IMPLICIT];
   */
  implicitEnumOpenField: Edition2023EnumOpen;

  /**
   * @generated from field: string required_string_field = 1 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredStringField: string;

  /**
   * @generated from field: bytes required_bytes_field = 2 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredBytesField: Uint8Array;

  /**
   * @generated from field: int32 required_int32_field = 3 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredInt32Field: number;

  /**
   * @generated from field: int64 required_int64_field = 4 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredInt64Field: bigint;

  /**
   * @generated from field: int64 required_int64_js_number_field = 5 [jstype = JS_NUMBER, features.field_presence = LEGACY_REQUIRED];
   */
  requiredInt64JsNumberField: bigint;

  /**
   * @generated from field: int64 required_int64_js_string_field = 6 [jstype = JS_STRING, features.field_presence = LEGACY_REQUIRED];
   */
  requiredInt64JsStringField: string;

  /**
   * @generated from field: float required_float_field = 7 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredFloatField: number;

  /**
   * @generated from field: bool required_bool_field = 8 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredBoolField: boolean;

  /**
   * @generated from field: spec.Edition2023EnumOpen required_enum_open_field = 9 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredEnumOpenField: Edition2023EnumOpen;

  /**
   * @generated from field: spec.Edition2023EnumClosed required_enum_closed_field = 10 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredEnumClosedField: Edition2023EnumClosed;

  /**
   * @generated from field: spec.Edition2023Message.Child required_message_field = 11 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredMessageField?: Edition2023Message_Child;

  /**
   * @generated from field: spec.Edition2023Message.Child required_message_delimited_field = 12 [features.field_presence = LEGACY_REQUIRED, features.message_encoding = DELIMITED];
   */
  requiredMessageDelimitedField?: Edition2023Message_Child;

  /**
   * @generated from field: google.protobuf.UInt32Value required_wrapped_uint32_field = 13 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredWrappedUint32Field?: number;

  /**
   * @generated from field: string required_default_string_field = 101 [default = "hello \" *\/ ", features.field_presence = LEGACY_REQUIRED];
   */
  requiredDefaultStringField: string;

  /**
   * @generated from field: bytes required_default_bytes_field = 102 [default = "\000x\\x\\"x\'AAAAAA\010\014\n\r\t\013", features.field_presence = LEGACY_REQUIRED];
   */
  requiredDefaultBytesField: Uint8Array;

  /**
   * @generated from field: int32 required_default_int32_field = 103 [default = 128, features.field_presence = LEGACY_REQUIRED];
   */
  requiredDefaultInt32Field: number;

  /**
   * @generated from field: int64 required_default_int64_field = 104 [default = -256, features.field_presence = LEGACY_REQUIRED];
   */
  requiredDefaultInt64Field: bigint;

  /**
   * @generated from field: int64 required_default_int64_js_number_field = 105 [default = -256, jstype = JS_NUMBER, features.field_presence = LEGACY_REQUIRED];
   */
  requiredDefaultInt64JsNumberField: bigint;

  /**
   * @generated from field: int64 required_default_int64_js_string_field = 106 [default = -256, jstype = JS_STRING, features.field_presence = LEGACY_REQUIRED];
   */
  requiredDefaultInt64JsStringField: string;

  /**
   * @generated from field: float required_default_float_field = 107 [default = -512.13, features.field_presence = LEGACY_REQUIRED];
   */
  requiredDefaultFloatField: number;

  /**
   * @generated from field: bool required_default_bool_field = 108 [default = true, features.field_presence = LEGACY_REQUIRED];
   */
  requiredDefaultBoolField: boolean;

  /**
   * @generated from field: spec.Edition2023EnumOpen required_default_enum_open_field = 109 [default = EDITION2023_ENUM_OPEN_A, features.field_presence = LEGACY_REQUIRED];
   */
  requiredDefaultEnumOpenField: Edition2023EnumOpen;

  /**
   * @generated from field: spec.Edition2023EnumClosed required_default_enum_closed_field = 110 [default = EDITION2023_ENUM_CLOSED_A, features.field_presence = LEGACY_REQUIRED];
   */
  requiredDefaultEnumClosedField: Edition2023EnumClosed;

  /**
   * @generated from field: repeated string repeated_string_field = 401;
   */
  repeatedStringField: string[];

  /**
   * @generated from field: repeated bytes repeated_bytes_field = 402;
   */
  repeatedBytesField: Uint8Array[];

  /**
   * @generated from field: repeated int32 repeated_int32_field = 403;
   */
  repeatedInt32Field: number[];

  /**
   * @generated from field: repeated int64 repeated_int64_field = 404;
   */
  repeatedInt64Field: bigint[];

  /**
   * @generated from field: repeated int64 repeated_int64_js_number_field = 405 [jstype = JS_NUMBER];
   */
  repeatedInt64JsNumberField: bigint[];

  /**
   * @generated from field: repeated int64 repeated_int64_js_string_field = 406 [jstype = JS_STRING];
   */
  repeatedInt64JsStringField: string[];

  /**
   * @generated from field: repeated float repeated_float_field = 407;
   */
  repeatedFloatField: number[];

  /**
   * @generated from field: repeated bool repeated_bool_field = 408;
   */
  repeatedBoolField: boolean[];

  /**
   * @generated from field: repeated spec.Edition2023EnumOpen repeated_enum_open_field = 409;
   */
  repeatedEnumOpenField: Edition2023EnumOpen[];

  /**
   * @generated from field: repeated spec.Edition2023EnumClosed repeated_enum_closed_field = 410;
   */
  repeatedEnumClosedField: Edition2023EnumClosed[];

  /**
   * @generated from field: repeated spec.Edition2023Message repeated_message_field = 411;
   */
  repeatedMessageField: Edition2023Message[];

  /**
   * @generated from field: repeated spec.Edition2023Message repeated_message_delimited_field = 412 [features.message_encoding = DELIMITED];
   */
  repeatedMessageDelimitedField: Edition2023Message[];

  /**
   * @generated from field: repeated google.protobuf.UInt32Value repeated_wrapped_uint32_field = 413;
   */
  repeatedWrappedUint32Field: UInt32Value[];

  /**
   * @generated from field: repeated double packed_double_field = 414 [features.repeated_field_encoding = PACKED];
   */
  packedDoubleField: number[];

  /**
   * @generated from field: repeated uint32 packed_uint32_field = 415 [features.repeated_field_encoding = PACKED];
   */
  packedUint32Field: number[];

  /**
   * @generated from field: repeated uint64 packed_uint64_field = 416 [features.repeated_field_encoding = PACKED];
   */
  packedUint64Field: bigint[];

  /**
   * @generated from field: repeated double unpacked_double_field = 417 [features.repeated_field_encoding = EXPANDED];
   */
  unpackedDoubleField: number[];

  /**
   * @generated from field: repeated uint32 unpacked_uint32_field = 418 [features.repeated_field_encoding = EXPANDED];
   */
  unpackedUint32Field: number[];

  /**
   * @generated from field: repeated uint64 unpacked_uint64_field = 419 [features.repeated_field_encoding = EXPANDED];
   */
  unpackedUint64Field: bigint[];

  /**
   * @generated from oneof spec.Edition2023Message.either
   */
  either: {
    /**
     * @generated from field: string oneof_string_field = 501;
     */
    value: string;
    case: "oneofStringField";
  } | {
    /**
     * @generated from field: bytes oneof_bytes_field = 502;
     */
    value: Uint8Array;
    case: "oneofBytesField";
  } | {
    /**
     * @generated from field: int32 oneof_int32_field = 503;
     */
    value: number;
    case: "oneofInt32Field";
  } | {
    /**
     * @generated from field: int64 oneof_int64_field = 504;
     */
    value: bigint;
    case: "oneofInt64Field";
  } | {
    /**
     * @generated from field: int64 oneof_int64_js_number_field = 505 [jstype = JS_NUMBER];
     */
    value: bigint;
    case: "oneofInt64JsNumberField";
  } | {
    /**
     * @generated from field: int64 oneof_int64_js_string_field = 506 [jstype = JS_STRING];
     */
    value: string;
    case: "oneofInt64JsStringField";
  } | {
    /**
     * @generated from field: float oneof_float_field = 507;
     */
    value: number;
    case: "oneofFloatField";
  } | {
    /**
     * @generated from field: bool oneof_bool_field = 508;
     */
    value: boolean;
    case: "oneofBoolField";
  } | {
    /**
     * @generated from field: spec.Edition2023EnumOpen oneof_enum_open_field = 509;
     */
    value: Edition2023EnumOpen;
    case: "oneofEnumOpenField";
  } | {
    /**
     * @generated from field: spec.Edition2023EnumClosed oneof_enum_closed_field = 510;
     */
    value: Edition2023EnumClosed;
    case: "oneofEnumClosedField";
  } | {
    /**
     * @generated from field: spec.Edition2023Message oneof_message_field = 511;
     */
    value: Edition2023Message;
    case: "oneofMessageField";
  } | {
    /**
     * @generated from field: spec.Edition2023Message oneof_message_delimited_field = 512 [features.message_encoding = DELIMITED];
     */
    value: Edition2023Message;
    case: "oneofMessageDelimitedField";
  } | {
    /**
     * @generated from field: google.protobuf.UInt32Value oneof_wrapped_uint32_field = 513;
     */
    value: UInt32Value;
    case: "oneofWrappedUint32Field";
  } | { case: undefined; value?: undefined };

  /**
   * @generated from field: map<string, string> map_string_string_field = 601;
   */
  mapStringStringField: { [key: string]: string };

  /**
   * @generated from field: map<int32, int32> map_int32_int32_field = 602;
   */
  mapInt32Int32Field: { [key: number]: number };

  /**
   * @generated from field: map<bool, bool> map_bool_bool_field = 603;
   */
  mapBoolBoolField: { [key: string]: boolean };

  /**
   * @generated from field: map<int64, int64> map_int64_int64_field = 604;
   */
  mapInt64Int64Field: { [key: string]: bigint };

  /**
   * @generated from field: map<int32, spec.Edition2023EnumOpen> map_int32_enum_open_field = 605;
   */
  mapInt32EnumOpenField: { [key: number]: Edition2023EnumOpen };

  /**
   * @generated from field: map<int32, spec.Edition2023Message> map_int32_message_field = 607;
   */
  mapInt32MessageField: { [key: number]: Edition2023Message };

  /**
   * @generated from field: map<int32, google.protobuf.UInt32Value> map_int32_wrapped_uint32_field = 608;
   */
  mapInt32WrappedUint32Field: { [key: number]: UInt32Value };
};

/**
 * Describes the message spec.Edition2023Message.
 * Use `create(Edition2023MessageSchema)` to create a new message.
 */
export const Edition2023MessageSchema: GenMessage<Edition2023Message> = /*@__PURE__*/
  messageDesc(file_extra_edition2023, 0);

/**
 * message for use in required fields above to avoid circular reference
 *
 * @generated from message spec.Edition2023Message.Child
 */
export type Edition2023Message_Child = Message<"spec.Edition2023Message.Child"> & {
  /**
   * @generated from field: int32 f = 1;
   */
  f: number;
};

/**
 * Describes the message spec.Edition2023Message.Child.
 * Use `create(Edition2023Message_ChildSchema)` to create a new message.
 */
export const Edition2023Message_ChildSchema: GenMessage<Edition2023Message_Child> = /*@__PURE__*/
  messageDesc(file_extra_edition2023, 0, 0);

/**
 * this is an exact replication of spec.Proto3MessageForEdition2023 in editions
 * see edition-2023-proto2.proto
 *
 * @generated from message spec.Edition2023FromProto2Message
 */
export type Edition2023FromProto2Message = Message<"spec.Edition2023FromProto2Message"> & {
  /**
   * @generated from field: bool optional_bool_field = 1;
   */
  optionalBoolField: boolean;

  /**
   * @generated from field: spec.Edition2023EnumClosed optional_closed_enum_field = 2;
   */
  optionalClosedEnumField: Edition2023EnumClosed;

  /**
   * @generated from field: string optional_string_field_with_default = 3 [default = "hello \" *\/ "];
   */
  optionalStringFieldWithDefault: string;

  /**
   * @generated from field: spec.Edition2023FromProto2Message.OptionalGroup optionalgroup = 4 [features.message_encoding = DELIMITED];
   */
  optionalgroup?: Edition2023FromProto2Message_OptionalGroup;

  /**
   * @generated from field: bool required_bool_field = 5 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredBoolField: boolean;

  /**
   * @generated from field: spec.Edition2023EnumClosed required_closed_enum_field = 6 [features.field_presence = LEGACY_REQUIRED];
   */
  requiredClosedEnumField: Edition2023EnumClosed;

  /**
   * @generated from field: string required_string_field_with_default = 7 [default = "", features.field_presence = LEGACY_REQUIRED];
   */
  requiredStringFieldWithDefault: string;

  /**
   * @generated from field: spec.Edition2023FromProto2Message.RequiredGroup requiredgroup = 8 [features.message_encoding = DELIMITED];
   */
  requiredgroup?: Edition2023FromProto2Message_RequiredGroup;

  /**
   * @generated from field: repeated double packed_double_field = 9 [features.repeated_field_encoding = PACKED];
   */
  packedDoubleField: number[];

  /**
   * @generated from field: repeated double unpacked_double_field = 10 [features.repeated_field_encoding = EXPANDED];
   */
  unpackedDoubleField: number[];
};

/**
 * Describes the message spec.Edition2023FromProto2Message.
 * Use `create(Edition2023FromProto2MessageSchema)` to create a new message.
 */
export const Edition2023FromProto2MessageSchema: GenMessage<Edition2023FromProto2Message> = /*@__PURE__*/
  messageDesc(file_extra_edition2023, 1);

/**
 * @generated from message spec.Edition2023FromProto2Message.OptionalGroup
 */
export type Edition2023FromProto2Message_OptionalGroup = Message<"spec.Edition2023FromProto2Message.OptionalGroup"> & {
  /**
   * @generated from field: int32 int32_field = 1;
   */
  int32Field: number;
};

/**
 * Describes the message spec.Edition2023FromProto2Message.OptionalGroup.
 * Use `create(Edition2023FromProto2Message_OptionalGroupSchema)` to create a new message.
 */
export const Edition2023FromProto2Message_OptionalGroupSchema: GenMessage<Edition2023FromProto2Message_OptionalGroup> = /*@__PURE__*/
  messageDesc(file_extra_edition2023, 1, 0);

/**
 * @generated from message spec.Edition2023FromProto2Message.RequiredGroup
 */
export type Edition2023FromProto2Message_RequiredGroup = Message<"spec.Edition2023FromProto2Message.RequiredGroup"> & {
  /**
   * @generated from field: int32 int32_field = 1;
   */
  int32Field: number;
};

/**
 * Describes the message spec.Edition2023FromProto2Message.RequiredGroup.
 * Use `create(Edition2023FromProto2Message_RequiredGroupSchema)` to create a new message.
 */
export const Edition2023FromProto2Message_RequiredGroupSchema: GenMessage<Edition2023FromProto2Message_RequiredGroup> = /*@__PURE__*/
  messageDesc(file_extra_edition2023, 1, 1);

/**
 * this is an exact replication of spec.Proto2MessageForEdition2023 in editions
 * see edition-2023-proto3.proto
 *
 * @generated from message spec.Edition2023FromProto3Message
 */
export type Edition2023FromProto3Message = Message<"spec.Edition2023FromProto3Message"> & {
  /**
   * @generated from field: bool implicit_bool_field = 1 [features.field_presence = IMPLICIT];
   */
  implicitBoolField: boolean;

  /**
   * @generated from field: spec.Edition2023EnumOpen implicit_open_enum_field = 2 [features.field_presence = IMPLICIT];
   */
  implicitOpenEnumField: Edition2023EnumOpen;

  /**
   * @generated from field: bool explicit_bool_field = 5 [features.field_presence = EXPLICIT];
   */
  explicitBoolField: boolean;

  /**
   * @generated from field: spec.Edition2023EnumOpen explicit_open_enum_field = 6 [features.field_presence = EXPLICIT];
   */
  explicitOpenEnumField: Edition2023EnumOpen;

  /**
   * @generated from field: repeated double packed_double_field = 9 [features.repeated_field_encoding = PACKED];
   */
  packedDoubleField: number[];

  /**
   * @generated from field: repeated double unpacked_double_field = 10 [features.repeated_field_encoding = EXPANDED];
   */
  unpackedDoubleField: number[];
};

/**
 * Describes the message spec.Edition2023FromProto3Message.
 * Use `create(Edition2023FromProto3MessageSchema)` to create a new message.
 */
export const Edition2023FromProto3MessageSchema: GenMessage<Edition2023FromProto3Message> = /*@__PURE__*/
  messageDesc(file_extra_edition2023, 2);

/**
 * @generated from enum spec.Edition2023EnumOpen
 */
export enum Edition2023EnumOpen {
  /**
   * @generated from enum value: EDITION2023_ENUM_OPEN_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * @generated from enum value: EDITION2023_ENUM_OPEN_A = 1;
   */
  A = 1,
}

/**
 * Describes the enum spec.Edition2023EnumOpen.
 */
export const Edition2023EnumOpenSchema: GenEnum<Edition2023EnumOpen> = /*@__PURE__*/
  enumDesc(file_extra_edition2023, 0);

/**
 * @generated from enum spec.Edition2023EnumClosed
 * @generated with option features.enum_type = CLOSED
 */
export enum Edition2023EnumClosed {
  /**
   * @generated from enum value: EDITION2023_ENUM_CLOSED_A = 1;
   */
  A = 1,
}

/**
 * Describes the enum spec.Edition2023EnumClosed.
 */
export const Edition2023EnumClosedSchema: GenEnum<Edition2023EnumClosed> = /*@__PURE__*/
  enumDesc(file_extra_edition2023, 1);

